iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
佛心分享-IT 人自學之術

區塊鏈技術應用系列 第 16

Solidity 中的時間操作與區塊時間戳

  • 分享至 

  • xImage
  •  

1.時間戳 (Timestamp)
* 使用 block.timestamp 來獲取當前區塊的時間戳。
* 了解時間戳的單位是秒數,從 UNIX 時間 1970-01-01 開始計算。
https://ithelp.ithome.com.tw/upload/images/20240930/20169238kNu8INLN74.png
2.合約中的時間操作
* 在智能合約中可以利用時間戳進行各種操作,比如設定某些操作的截止時間、設置鎖 定期等。
* 常見的使用案例是建立投票或眾籌合約,設定何時開始和結束。
https://ithelp.ithome.com.tw/upload/images/20240930/20169238Yn9GJP1G3Q.png
* deadline = block.timestamp + durationInSeconds;
* 設置 deadline 的值為當前區塊的時間戳(block.timestamp)加上 durationInSeconds。
* 這表示截止時間為當前時間開始的一段時間後,確保眾籌有一個具體的結束時間。
3.常見的時間操作錯誤與注意事項
* 時間戳依賴問題:時間戳依賴於礦工,因此時間戳可能會有小幅偏差,不能用來做高 精度需求。
* 安全性考量:避免使用時間戳作為隨機數生成器,因為它的可預測性可能被攻擊者利 用。
4.時間相關的應用場景
* 投票合約:設置投票的開始和結束時間。
* 定時支付:在合約中進行定期支付,或者設置鎖定期,防止資金被過早提取。
https://ithelp.ithome.com.tw/upload/images/20240930/20169238UuFuAF4Lwg.png
示例完整合約
https://ithelp.ithome.com.tw/upload/images/20240930/20169238xcvriobPZJ.png


上一篇
Solidity中的錯誤處理方法
下一篇
Solidity 中的匯款與支付
系列文
區塊鏈技術應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言